package com.hzhc.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 集装箱信息
 * </p>
 *
 * @author 功不唐捐
 * @since 2024-05-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("cntr_info")
public class CntrInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 箱号
     */
    @TableId(value = "cntr_no",type = IdType.INPUT)
    private String cntrNo;

    /**
     * 箱尺寸
     */
    private String cntrSize;

    /**
     * 箱公司
     */
    private String cntrMain;

    /**
     * 铅封号
     */
    private String sealNo;

    /**
     * 货名
     */
    private String goods;

    /**
     * 预报重量
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Double weightPred;

    /**
     * 空重标志( E：空，F：重）
     */
    private String efFlag;

    /**
     * 贸易类型(默认W外贸，N内贸)
     */
    private String tradeType;

    /**
     * 残箱标志（0好箱，1残损箱）默认0好箱
     */
    private Integer damagedFlag;

    /**
     * 集装箱状态 0在场，1出场
     */
    private Integer status;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createtime;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updatetime;

    /**
     * 入场时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime inTime;

    /**
     * 是否删除（0正常false，1删除true）
     */
    private Boolean disable;

    /**
     * 箱所在区域
     */
    private String area;

    /**
     * 箱所在贝位
     */

    private String bay;

    /**
     * 会员Id
     */
    private Long memberId;

    /**
     * 系统用户Id(创建人)
     */
    private Long userId;

    /**
     * 姓名(创建人)
     */
    private String userName;

    /**
     * 访问方式（移动端,pc端)
     */
    private String accesspath;

    /**
     * 备注
     */
    private String remark;

    /**
     * 说明
     */
    private String content;

    /**
     * 火车名
     */
    private String trainName;

    /**
     * 操作状态
     */
    private String operateType;

    /**
     * 车次(火车号)
     */
    private String trainNumber;

    /**
     * 车牌号
     */
    private String carNo;

    /**
     * 提单号
     */
    private String billNo;

    /**
     * 箱况
     */
    private String xk;

    /**
     * 中转港
     */
    private String transitPort;

    /**
     * 导入清单备注
     */
    private String qdRemark;

    /**
     * 0:未锁  1:已锁
     */
    private Integer lockFlag;

    /**
     * 锁箱状态开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime lockStart;

    /**
     * 锁箱状态结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime lockEnd;

    /**
     * 锁箱备注
     */
    private String lockRemark;

    /**
     * 生成日志开关
     */
    private String logTag;

    /**
     * 机械代码
     */
    private String machineCode;

    /**
     * 机械名称
     */
    private String machineName;

    /**
     * 终端设备号
     */
    private String deviceNo;

    /**
     * 机械司机名称
     */
    private String driverName;

    /**
     * 箱流向
     */
    private String cntrFlow;

    /**
     * 业务订单单号
     */
    private String orderNo;

    /**
     * 装货港(发站)
     */
    private String zhPort;

    /**
     * 中转港
     */
    private String zzPort;

    /**
     * 目的港(到站)
     */
    private String mdPort;

    /**
     * 委托人
     */
    private String bailor;

    /**
     * 货主id
     */
    private Long companyId;

    /**
     * (火车)股道
     */
    private String strands;

    /**
     * 顺位号
     */
    private Integer swId;

    /**
     * 托运人重量
     */
    private Integer shipperWeight;

    /**
     * 承运人重量
     */
    private Integer carrierWeight;

    /**
     * 发货人
     */
    private String consigner;

    /**
     * 收货人
     */
    private String consignee;

    /**
     * 车上作业(默认0：否   1：是)
     */
    private Integer workCar;

    /**
     * 自用类型
     */
    private String selfUserType;

    /**
     * 箱类型
     */
    @TableField(exist = false)
    private String cntrType;
    /**
     * 集装箱来源
     */
    private Integer trackOrCar;

    /**
     * 船名
     */
    private String shipName;

    /**
     * 卸货港(到达港)
     */
    private String xPort;

    /**
     * 起运港
     */
    private String qyPort;

    /**
     * 收货人电话
     */
    private String consigneePhone;

    /**
     * 收货联系人
     */
    private String consigneeLx;

    /**
     * 发站
     */
    private String startPort;

    /**
     * 到站
     */
    private String endPort;

    /**
     * 修箱 0否 1是
     */
    private Integer cntrXx;
    /**
     * 箱备注
     */
    private String cntrRemark;

    /**
     * 发运箱动态信息
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String cntrWorkRemark;

    /**
     * 到达箱动态信息
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String cntrWorkRemarkB;
    //移箱原因
    private String moveReason;

    /**
     * 理货重量
     */
    private String lhWeight;
    /**
     * 过卡重量
     */
    private String kaWeight;
    /**
     * 出场时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private  LocalDateTime outTime;
    /**
     * 货场专用线
     */
    private String specialWay;

    /**
     * 发运状态(0继续发运 1取消发运)
     */
    private Integer sendTransportState;

    @TableField(exist = false)
    private String oldCntrNo;

    @TableField(exist = false)
    private String receiveName;

    /**
     * 付款人
     */
    private String payer;

    /**
     * 是否不校验付款人 0 否 1是
     */
    private Integer isZt;
}
